加法(+)

您所在的位置:网站首页 js基础类型 mdn 加法(+)

加法(+)

2023-08-17 22:04| 来源: 网络整理| 查看: 265

加法运算符(+)为两种不同的运算重载:数字加法和字符串连接。在求值时,它首先将两个操作数强制转换为基本类型。然后,检查两个操作数的类型:

如果有一方是字符串,另一方则会被转换为字符串,并且它们连接起来。 如果双方都是 BigInt,则执行 BigInt 加法。如果一方是 BigInt 而另一方不是,会抛出 TypeError。 否则,双方都会被转换为数字,执行数字加法。

字符串连接经常被认为等价于模板字符串或者 String.prototype.concat(),但并非如此。加法强制将表达式转为基本类型,它优先调用 valueOf();另一方面,模板字符串和 concat() 则强制将表达式转为字符串,它们优先调用 toString()。如果表达式有 @@toPrimitive 方法,字符串连接时会用 "default" 作为 hint 调用它,然而模板字符串则用 "string"。这对于具有不同的字符串和原始值表现的对象来说很重要——例如 Temporal,它的 valueOf() 方法会抛出错误。

js

const t = Temporal.Now.instant(); "" + t; // 抛出 TypeError `${t}`; // '2022-07-31T04:48:56.113918308Z' "".concat(t); // '2022-07-31T04:48:56.113918308Z'

建议不要使用 "" + x 来执行字符串强制转换。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3